using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace FrameworkDesign
{
    public interface ISystem : IBelongToArchitecture, ICanSetArchitecture, ICanGetModel, ICanGetUtility,
        ICanRegisterEvent, ICanSendEvent, ICanGetSystem
    {

        void Init();

    }
    public abstract class AbstractSystem : ISystem
    {
        private IArchitecture mAchitecture;
        IArchitecture IBelongToArchitecture.GetArchitecture()
        {
            return mAchitecture;
        }

        void ISystem.Init()
        {
            OnInit();
        }

        void ICanSetArchitecture.SetArchitecture(IArchitecture architecture)
        {
            mAchitecture = architecture;
        }
        public abstract void OnInit();

    }
}

